////////////////////////////////////////////////////////////////////////////////
//
//  The ffi Document Processor
//  Copyright (C) 2012 by Kevin Carlson. All rights reserved.
//
//  This application is released under the terms of the Simplified (2-clause)
//  BSD License. For details, see the LICENSE file in the source distribution.
//
////////////////////////////////////////////////////////////////////////////////

#ifndef FFIPARAGRAPHSTYLE_H
#define	FFIPARAGRAPHSTYLE_H

#include <string>

using namespace std;

class FfiParagraphStyle
{
    bool allowParagraphSplit;
    bool dropCapsAffectsWholeWord;
    bool emphasized;
    bool hyphenate;
    bool keepWithNextParagraph;
    bool orphanControl;
    bool registerTrue;
    bool smallCaps;
    bool strikeout;
    bool strong;
    bool subscript;
    bool superscript;
    bool underline;
    bool useDropCaps;
    bool widowControl;
    
    int charactersForDropCaps;
    int minimumCharactersAfterHyphenation;
    int minimumCharactersBeforeHyphenation;
    int orphanThreshold;
    int widowThreshold;
    
    double fontSize;            // Represents a size in points
    double horizontalSpacing;   // Represents a size in points
    double indentFirstLine;     // Represents a size in inches
    double indentLeft;          // Represents a size in inches
    double indentRight;         // Represents a size in inches
    double spacingBottom;       // Represents a size in points
    double spacingTop;          // Represents a size in points
    double verticalSpacing;     // Represents a size relative to the line height
    
    string fontFace;
    string styleName;
public:
    FfiParagraphStyle();
    FfiParagraphStyle(const FfiParagraphStyle& orig);
    virtual ~FfiParagraphStyle();

    bool getAllowParagraphSplit();
    bool getDropCapsAffectsWholeWord();
    bool getEmphasized();
    bool getHyphenate();
    bool getKeepWithNextParagraph();
    bool getOrphanControl();
    bool getRegisterTrue();
    bool getSmallCaps();
    bool getStrikeout();
    bool getStrong();
    bool getSubscript();
    bool getSuperscript();
    bool getUnderline();
    bool getUseDropCaps();
    bool getWidowControl();
    
    int getCharactersForDropCaps();
    int getMinimumCharactersAfterHyphenation();
    int getMinimumCharactersBeforeHyphenation();
    int getOrphanThreshold();
    int getWidowThreshold();
    
    double getFontSize();
    double getHorizontalSpacing();
    double getIndentFirstLine();
    double getIndentLeft();
    double getIndentRight();
    double getSpacingBottom();
    double getSpacingTop();
    double getVerticalSpacing();
    
    string getFontFace();
    string getStyleName();
    
    void setAllowParagraphSplit(bool newValue);
    void setCharactersForDropCaps(int newValue);
    void setDropCapsAffectsWholeWord(bool newValue);
    void setEmphasized(bool newValue);
    void setFontFace(string newValue);
    void setFontSize(double newValue);
    void setHorizontalSpacing(double newValue);
    void setHyphenate(bool newValue);
    void setIndentFirstLine(double newValue);
    void setIndentLeft(double newValue);
    void setIndentRight(double newValue);
    void setKeepWithNextParagraph(bool newValue);
    void setMinimumCharactersAfterHyphenation(int newValue);
    void setMinimumCharactersBeforeHyphenation(int newValue);
    void setOrphanControl(bool newValue);
    void setOrphanThreshold(int newValue);
    void setRegisterTrue(bool newValue);
    void setSmallCaps(bool newValue);
    void setSpacingBottom(double newValue);
    void setSpacingTop(double newValue);
    void setStrikeout(bool newValue);
    void setStrong(bool newValue);
    void setStyleName(string newValue);
    void setSubscript(bool newValue);
    void setSuperscript(bool newValue);
    void setUnderline(bool newValue);
    void setUseDropCaps(bool newValue);
    void setVerticalSpacing(double newValue);
    void setWidowControl(bool newValue);
    void setWidowThreshold(int newValue);
};

#endif

